// using System.IO;
//
// namespace FibMatrix.IO
// {
//     public class DefaultPackageImpl:IPackageStorageImpl
//     {
// 	    // private string _packageDataPathPrefix;
//
// 	    public DefaultPackageReader(/*string packageDataPathPrefix*/)
// 	    {
// 		    // this._packageDataPathPrefix = packageDataPathPrefix;
// 	    }
// 	    
// #if UNITY_ANDROID && !UNITY_EDITOR
//
// 		[DllImport("native_helper", CallingConvention = CallingConvention.Cdecl)]
// 		public static extern IntPtr ReadAssetsBytes(string path, out int size);
// 		
// 		[DllImport("native_helper", CallingConvention = CallingConvention.Cdecl)]
// 		public static extern void ReleaseBytes(IntPtr bytes);
// 		
// 		public byte[] ReadAsset(string path)
// 		{
// 			int size;
// 			IntPtr ptr = ReadAssetsBytes(path, out size);
// 			
// 			if (size < 0)
// 			{
// 				UnityEngine.Debug.LogError("Read Assets Error " + path);
// 				return null;
// 			}
// 			
// 			if (size == 0)
// 			{
// 				return new byte[0];
// 			}
//
// 			byte[] result = new byte[size];
// 			Marshal.Copy(ptr, result, 0, (int)size);
// 			ReleaseBytes(ptr);
// 			return result;
//
// 		}
//
// #else
//
//         public byte[] ReadAsset(string path)
//         {
//             // string finalPath = _packageDataPathPrefix + path;
//             return File.Exists(path) ? File.ReadAllBytes(path) : null;
//         }
//
//         public Stream OpenAssetStream(string path)
//         {
// 	        return File.Exists(path) ? File.OpenRead(path) : null;
//         }
//
//         public bool FileExists(string path)
//         {
// 	        return File.Exists(path);
//         }
//
//         public bool DirectoryExists(string path)
//         {
// 	        return Directory.Exists(path);
//         }
//
// #endif
//     }
// }